FIG. 1 illustrates a software event queue environment 20 in accordance with the prior art. The environment 20 includes a graphical user interface (GUI) 22 which supports a first application window 24A and a second application window 24B. By way of example, the first application window 24A may be for a word processor application program, while the second application window 24B may be for a spread sheet application program.
When a user performs an operation on an application window 24, such as clicking on an object or resizing a window, messages are generated that describe the operation that was performed. The messages are sent to an event queue 28, as constructed with event queue code 27. FIG. 1 illustrates that the first application window 24A sends a first set of messages to a first event queue 28A, while the second application window 24N sends a second set of messages to a second event queue 28N. Each event queue operates as a buffer between its corresponding application window 24 and application program 30. Thus, the event queue 28A operates as a buffer between the application window 24A and the application program 30A, while the event queue 28N operates as a buffer between the application window 24N and the application program 30N.
FIG. 2 illustrates a computer 40 used to implement the system of FIG. 1. The computer 40 includes a central processing unit (CPU) 42 that communicates with a set of input/output devices 44 over a system bus 46. The input/output devices 44 include a keyboard, mouse, computer monitor, printer, etc. The computer monitor is used to display the GUI 22. The system bus 46 is also connected to a memory 48. The memory 48 stores a number of programs and data associated with the system of FIG. 1. In particular, the memory 48 stores operating system code 50 and GUI code 32, which is used to generate the GUI 22. Associated with the GUI code 32 is event queue code 27, which is used to generate the event queues 28A-28N. Finally, the memory 48 stores a number of application programs 30A-30N.
The set of event queues 28A-28N constitutes a fixed and proprietary event queue implementation 26. The developer of the GUI 22 defines the event queue code 34 that is used to form the event queue implementation 26. This code is typically fixed and proprietary, meaning that its implementation is not modifiable so as to allow programmers to add code to extend the functionality of the event queue implementation 26 at runtime. Since it is impossible to change the operation of prior art event queue implementations, developers cannot create specialized event queues for debugging, tracing, and event recording operations.
In view of the foregoing, it would be highly desirable to provide a technique for extending the functionality of event queues. In particular, it would be highly desirable to allow developers to extend and customize event queue implementations without modification of GUI source code.